package com.tencreat.service.mall;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tencreat.common.core.domain.model.LoginUser;
import com.tencreat.common.core.domain.model.ReqIdParam;
import com.tencreat.common.core.domain.model.ReqIdsParam;
import com.tencreat.domain.mall.MallCoupon;
import com.tencreat.domain.mall.MallCouponUser;
import com.tencreat.domain.mall.vo.ResOrderMallGoodsVO;

import java.util.List;

/**
 * 优惠券信息及规则Service接口
 *
 * @author tencreat
 * @date 2021-08-13
 */
public interface IMallCouponService extends IService<MallCoupon> {
    /**
     * 查询优惠券信息及规则
     *
     * @param id 优惠券信息及规则ID
     * @return 优惠券信息及规则
     */
    public MallCoupon selectMallCouponById(ReqIdParam id);

    /**
     * 查询优惠券信息及规则列表
     *
     * @param mallCoupon 优惠券信息及规则
     * @return 优惠券信息及规则集合
     */
    public List<MallCoupon> selectMallCouponList(MallCoupon mallCoupon);

    /**
     * 新增优惠券信息及规则
     *
     * @param mallCoupon 优惠券信息及规则
     * @return 结果
     */
    public int insertMallCoupon(MallCoupon mallCoupon, LoginUser user);

    /**
     * 修改优惠券信息及规则
     *
     * @param mallCoupon 优惠券信息及规则
     * @return 结果
     */
    public int updateMallCoupon(MallCoupon mallCoupon);

    /**
     * 批量删除优惠券信息及规则
     *
     * @param ids 需要删除的优惠券信息及规则ID
     * @return 结果
     */
    public int deleteMallCouponByIds(ReqIdsParam ids);

    /**
     * 优惠券列表
     *
     * @param goods 商品集合
     * @param uuid 用户ID
     * @return 列表
     */
    List<MallCouponUser> couponUserList(List<ResOrderMallGoodsVO> goods, Long uuid);
}
